/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Productos;

import bdControlador.BdControlador;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

/**
 *
 * @author alrojas
 */
public class MProducto {
    public static boolean agregar( Producto producto ) throws SQLException, ClassNotFoundException{
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        boolean resultado = estado.execute("INSERT INTO productos (lote,nombre_comercial,nombre_generico,nombre_laboratorio,nombre_categoria,ruc_proveedor,presentacion,fecha_vencimiento,precio_unitario,cantidad_actual,cantidad_minima) VALUES ('','" + producto.getNombreComercial() + "', '" +  producto.getNombreGenerico() + "', '" + producto.getNombreLaboratorio() + "', '" + producto.getNombreCategoria() + "', '" + producto.getRucProveedor() + "', '" + producto.getPresentacion() + "', '" + producto.getFechaVencimiento() + "', '" + producto.getPrecioUnitario() + "', '" + producto.getCantidadActual() + "', '" + producto.getCantidadMinima() + "');");
        BdControlador.liberarConexion(conexion);
        
        return resultado;
    }
    
    public static boolean editar(Producto producto) throws SQLException, ClassNotFoundException{
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        boolean resultado = estado.execute("UPDATE productos SET nombre_comercial='" + producto.getNombreComercial() + "',nombre_generico='" + producto.getNombreGenerico() + "',nombre_laboratorio='" + producto.getNombreLaboratorio() + "',nombre_categoria='" + producto.getNombreCategoria() + "',ruc_proveedor='" + producto.getRucProveedor() + "',presentacion='" + producto.getPresentacion() + "',fecha_vencimiento='" + producto.getFechaVencimiento() + "',precio_unitario='" + producto.getPrecioUnitario() + "',cantidad_actual='" + producto.getCantidadActual() + "',cantidad_minima='" + producto.getCantidadMinima() + "' WHERE codigo=" + producto.getCodigo() + ";");
        BdControlador.liberarConexion(conexion);
    
        return resultado;
}
    
    public static boolean eliminar(int codigo) throws SQLException, ClassNotFoundException{
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        boolean resultado = estado.execute("DELETE FROM productos WHERE codigo=" + codigo);
        BdControlador.liberarConexion(conexion);
        return resultado;
    }
    
    
    public static Vector< Vector< String > > dameTodo() throws SQLException, ClassNotFoundException{
        
        Vector <Vector<String>> productos = new Vector<Vector<String>>();
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        ResultSet consulta = estado.executeQuery("SELECT *,DATEDIFF(fecha_vencimiento,CURDATE()) AS diferencia FROM productos ORDER BY diferencia ASC");
        
        while(consulta.next()){
            Vector fila = new Vector(); 
            fila.add(consulta.getString(1));
            fila.add(consulta.getString(3));
            fila.add(consulta.getString(4));
            fila.add(consulta.getString(11));
            fila.add(consulta.getString(8));
            fila.add(consulta.getString(5));
            fila.add(consulta.getDate(9));
            fila.add(consulta.getString(13));
            
            productos.add(fila);
        }
        BdControlador.liberarConexion(conexion);
        
        return productos;
    }
    
    public static Vector< Vector< String > > damePorVencer() throws SQLException, ClassNotFoundException{
        
        Vector <Vector<String>> productos = new Vector<Vector<String>>();
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        ResultSet consulta = estado.executeQuery("SELECT *,DATEDIFF(fecha_vencimiento,CURDATE()) AS diferencia FROM productos WHERE DATEDIFF(fecha_vencimiento,CURDATE()) < 31 ORDER BY diferencia ASC");
        
        while(consulta.next()){
            Vector fila = new Vector(); 
            fila.add(consulta.getString(1));
            fila.add(consulta.getString(3));
            fila.add(consulta.getString(4));
            fila.add(consulta.getDate(9));
            fila.add(consulta.getString(13));
            
            productos.add(fila);
        }
        BdControlador.liberarConexion(conexion);
        
        return productos;
    }
    
    public static Vector< Vector< String > > damePorAcabar() throws SQLException, ClassNotFoundException{
        
        Vector <Vector<String>> productos = new Vector<Vector<String>>();
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        ResultSet consulta = estado.executeQuery("SELECT *,(cantidad_actual*100/cantidad_minima) AS porcentaje FROM productos WHERE cantidad_actual < cantidad_minima ORDER BY porcentaje ASC");
        
        while(consulta.next()){
            Vector fila = new Vector(); 
            fila.add(consulta.getString(1));
            fila.add(consulta.getString(3));
            fila.add(consulta.getString(4));
            fila.add(consulta.getString(12));
            fila.add(consulta.getString(11));
            
            productos.add(fila);
        }
        BdControlador.liberarConexion(conexion);
        
        return productos;
    }
    
    public static Producto dameUno(int codigo) throws SQLException, ClassNotFoundException{
        
        Producto producto = null;
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        ResultSet consulta = estado.executeQuery("SELECT * FROM productos WHERE codigo=" + codigo);
        
        if (consulta.next()){
           producto = new Producto(consulta.getString(1), consulta.getString(3), consulta.getString(4), consulta.getString(5), consulta.getString(6), consulta.getString(7), consulta.getString(8), consulta.getString(9), consulta.getFloat(10), consulta.getInt(11), consulta.getInt(12));
        }
        BdControlador.liberarConexion(conexion);
         
        return producto;
    }
    
    public static void decrementar(int codigo, int cantidad) throws SQLException, ClassNotFoundException{
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        //System.out.println("UPDATE productos SET cantidad_actual=cantidad_actual-" + cantidad + " WHERE codigo=" + codigo);
        estado.execute("UPDATE productos SET cantidad_actual=cantidad_actual-" + cantidad + " WHERE codigo=" + codigo);
        
    }
    
   /* public static Vector < Vector < String > > dameLosQueSeAcaban() throws SQLException, ClassNotFoundException{
        
        Vector <Vector<String>> productos = new Vector<Vector<String>>();
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        ResultSet consulta = estado.executeQuery("SELECT * from productos WHERE cantidad_minima>cantidad_actual");
        
        while(consulta.next()){
            Vector < String > fila = new Vector< String >(); 
            fila.add(consulta.getString(1));
            fila.add(consulta.getString(3));
            fila.add(consulta.getString(4));
            fila.add(consulta.getString(11));
            fila.add(consulta.getString(8));
            fila.add(consulta.getString(5));
            
            productos.add(fila);
        }
        BdControlador.liberarConexion(conexion);
        
        return productos;
    }*/
    
}
